Еще один класс порожденный от CFile. Этот класс позволяет пользоваться стандартными стредствами C,C++ для ввода/вывода. При использовании этого класса важно понятие открытия и закрытия файла, как и при обычном открытии файла в C в отличии от расмотренного ранее CMemFile.
Давайте создадим приложение AppWizard на основе диалогового окна и поставим кнопку с кодом. Как делали в прошлые разы.
void CTestStdioDlg::OnButton1()
{
CStdioFile File("c:\\windows\\Wordpad.ini",CFile::modeRead);
CString str;
File.ReadString(str);
AfxMessageBox(str);
File.Close();
}
Любой класс начинается с конструктора. Вот какие конструкторы у этого
класса. CStdioFile( ); CStdioFile( FILE* pOpenStream ); CStdioFile( LPCTSTR lpszFileName, UINT nOpenFlags ); throw( CFileException );При укзании имени файла производится его открытие. Открытие может быть в текстовом и бинарном формате. Текстовый режим реализует стандартную обработку возврата коретки при чтении данных. Конец строки работает интересно. Вот так.
Посылаем конец стоки 0хА в файл пишется 0хА 0хD Читаем из файла конец строки 0хА 0хD, читается из файла 0хAКак видно из конструктора при невозможности операции с файлом появится исключение. Сделайте вот так.
void CTestStdioDlg::OnButton1()
{
CStdioFile File("c:\\windows\\NotFile.not",CFile::modeRead);
CString str;
File.ReadString(str);
AfxMessageBox(str);
File.Close();
}
И вы получите исключение такого вида.

красивое сообщение, но его неполохо бы обработать хоть просто, вот например так хотя и не совсем корректно, потому что будут отлавливаться все типы исключений.
void CTestStdioDlg::OnButton1()
{
try
{
CStdioFile File("c:\\windows\\NotFile.not",CFile::modeRead);
CString str;
File.ReadString(str);
AfxMessageBox(str);
File.Close();
}
catch(...)
{
AfxMessageBox("Error Open");
}
}
К классу CFile есть ряд дополнительных функций. ReadString читает строку текста WriteString записывает строку текстаИ указатель на открытый файл
m_pStream